/*
 * Robot.h
 *
 *  Created on: 12 nov. 2012
 *      Author: nolan
 */

#ifndef ROBOT_H_
#define ROBOT_H_

#include <string>
#include <iostream>
#include <set>
#include "Objet.h"
#include "Obstacle.h"
#include "Position.h"
#include "./afficheur/Afficheur.h"

using namespace std;

class EtatRobot;

class Robot {
private:
	string _direction;
	EtatRobot* _etatRobot;
	string _etatCourant;
	Obstacle* _obstacle;
	Position* _position;
	Objet* _objet;
	set<Afficheur*> _list_afficheurs;

public:
	Robot();
	void avancer(int, int);
	void tourner(string);
	void saisir(Objet*);
	void poser();
	int peser();
	void rencontrerObstacle(Obstacle*);
	int evaluerObstacle();
	void figer();
	void repartir();
	void setEtat(EtatRobot*);

	EtatRobot* getEtat();
	string getEtatCourant();
	void setEtatCourant(string);
	Position* getPosition();
	string getDirection();
	Obstacle* getObstacle();
	Objet* getObjet();

	void notify();
	void notify(string);
	void attache(Afficheur*);
	void detache(Afficheur*);

};

#endif /* ROBOT_H_ */
